package com.zyh.em.evaluate;

import com.zyh.em.entity.EvaluateData;
import com.zyh.em.entity.EvaluateReport;
import com.zyh.em.entity.HistoryData;

import java.util.Set;

/**
 * 抽象类，所有评估的父类类型
 */
public class CItyEvaluate extends AbstractEvaluate{
    /**
     *
     * @param evaluateData 评估数据
     * @param historyData 历史数据
     * @param evaluateReport 评估报告
     * @param evaluateChain 评估链：具体的评估因子执行完成之后，需要交给评估链完成
     */
    @Override
    public void evaluate(EvaluateData evaluateData, HistoryData historyData, EvaluateReport evaluateReport,EvaluateChain evaluateChain) {
        //判断本次登陆地在历史中有无出现
        //1.计算
        Set<String> cities = historyData.getCities();//1.2 从历史数据中获取到历次成功登录的登录地
        String city = evaluateData.getCity();//1.1 从评估数据中获取到登录地
        //1.3 判断是否是第一次登录，如果是，没有风险；否则，判断本次登录地在历次登录中是否存储，如果存在，没有风险，不存在有风险
        if (cities==null || cities.isEmpty() || cities.contains(city)){
            evaluateReport.setRiskFactor("city",false);//无风险
        }else {
            evaluateReport.setRiskFactor("city",true);//有风险
        }
        evaluateChain.doEvaluate(evaluateData, historyData, evaluateReport);
    }
}
